#include <VolumeUnit.h>
#include <iostream>
#include <algorithm>
#include <Unit.h>

using namespace std;

typedef std::vector<const VolumeUnit*> VolumeUnitSeq;

#define TSP_TO_BASE_UNIT 1
#define BSP_TO_BASE_UNIT (3*TSP_TO_BASE_UNIT)
#define OZ_TO_BASE_UNIT  (2*BSP_TO_BASE_UNIT)

#define UNITSEQ getUnitSeq()

namespace
{
    DEFINE_UNIT_COMPARE(Volume)

    DEFINE_UNIT_APPEND(Volume)

    DEFINE_GET_UNIT_SEQ(Volume)
}

DEFINE_UNIT(Volume,TSP)

DEFINE_UNIT(Volume,BSP)

DEFINE_UNIT(Volume,OZ)

const VolumeUnit&
VolumeUnit::getBaseUnit()
{
    return getOZ();
}

void
VolumeUnit::vistorUnitSeq(VolumeUnit::UnitSeqVistor& vistor)
{
    for(VolumeUnitSeq::const_iterator iter = UNITSEQ.begin(); iter!=UNITSEQ.end(); iter++)
    {
        vistor.access(*iter);
    }
}


DEFINE_UNIT_CLASS(Volume)

